#include<iostream>
#include<functional>
#include<unistd.h>
#include<vector>



// //练习bind函数

// class test{
//     public:

//     test(){std::cout<<"构造"<<std::endl;}

//     ~test(){std::cout<<"析构"<<std::endl;}


// };


// void func(const test* t,int num)
// {
//     std::cout<<num<<std::endl;
//     delete t;

// }



// int main()
// {

//     test* t=new test();

//     auto func_bind=std::bind(func,std::placeholders::_1,2);
//     func_bind(t);

    
//     return 0;
// }


//以此在线程任务推送时，可以消除任务池的任务接送函数对于不同参数的需求
void Print(const std::string & str)
{
    std::cout<<str<<std::endl;
}

using func=std::function<void()>;

int main()
{
    std::vector<func> task_pool;
    task_pool.push_back(std::bind(Print,"xiaowang"));
    task_pool.push_back(std::bind(Print,"xiaohehe"));
    task_pool.push_back(std::bind(Print,"heyiyi"));

    for(auto &functor: task_pool)
    {
        functor();

    }

    return 0;
}

